// Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

// "use strict"

Function.prototype.getName = function(){
    return this.name || this.toString().match(/function\s*([^(]*)\(/)[1];
}

var fun_name = function (){
  var tmp = arguments.callee.toString();
  // console.log(tmp);
  console.log(arguments.callee.name)
   
  
}

 
fun_name();


(function (){
  var tmp = arguments.callee.toString();
  // console.log(tmp);
  console.log(arguments.callee.name)
  console.dir(arguments.callee)
}());